/**
 * Copyright 2023 The CubeFS Authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */

// 格式对照表
const typeList = {
  xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
  xltx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
  potx: 'application/vnd.openxmlformats-officedocument.presentationml.template',
  ppsx: 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
  pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
  sldx: 'application/vnd.openxmlformats-officedocument.presentationml.slide',
  docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
  dotx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
  xlam: 'application/vnd.ms-excel.addin.macroEnabled.12',
  xlsb: 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
  apk: 'application/vnd.android.package-archive',
  hqx: 'application/mac-binhex40',
  cpt: 'application/mac-compactpro',
  doc: 'application/msword',
  ogg: 'application/ogg',
  pdf: 'application/pdf',
  rtf: 'text/rtf',
  mif: 'application/vnd.mif',
  xls: 'application/vnd.ms-excel',
  ppt: 'application/vnd.ms-powerpoint',
  odc: 'application/vnd.oasis.opendocument.chart',
  odb: 'application/vnd.oasis.opendocument.database',
  odf: 'application/vnd.oasis.opendocument.formula',
  odg: 'application/vnd.oasis.opendocument.graphics',
  otg: 'application/vnd.oasis.opendocument.graphics-template',
  odi: 'application/vnd.oasis.opendocument.image',
  odp: 'application/vnd.oasis.opendocument.presentation',
  otp: 'application/vnd.oasis.opendocument.presentation-template',
  ods: 'application/vnd.oasis.opendocument.spreadsheet',
  ots: 'application/vnd.oasis.opendocument.spreadsheet-template',
  odt: 'application/vnd.oasis.opendocument.text',
  odm: 'application/vnd.oasis.opendocument.text-master',
  ott: 'application/vnd.oasis.opendocument.text-template',
  oth: 'application/vnd.oasis.opendocument.text-web',
  sxw: 'application/vnd.sun.xml.writer',
  stw: 'application/vnd.sun.xml.writer.template',
  sxc: 'application/vnd.sun.xml.calc',
  stc: 'application/vnd.sun.xml.calc.template',
  sxd: 'application/vnd.sun.xml.draw',
  std: 'application/vnd.sun.xml.draw.template',
  sxi: 'application/vnd.sun.xml.impress',
  sti: 'application/vnd.sun.xml.impress.template',
  sxg: 'application/vnd.sun.xml.writer.global',
  sxm: 'application/vnd.sun.xml.math',
  sis: 'application/vnd.symbian.install',
  wbxml: 'application/vnd.wap.wbxml',
  wmlc: 'application/vnd.wap.wmlc',
  wmlsc: 'application/vnd.wap.wmlscriptc',
  bcpio: 'application/x-bcpio',
  torrent: 'application/x-bittorrent',
  bz2: 'application/x-bzip2',
  vcd: 'application/x-cdlink',
  pgn: 'application/x-chess-pgn',
  cpio: 'application/x-cpio',
  csh: 'application/x-csh',
  dvi: 'application/x-dvi',
  spl: 'application/x-futuresplash',
  gtar: 'application/x-gtar',
  hdf: 'application/x-hdf',
  jar: 'application/x-java-archive',
  jnlp: 'application/x-java-jnlp-file',
  js: 'application/x-javascript',
  ksp: 'application/x-kspread',
  chrt: 'application/x-kchart',
  kil: 'application/x-killustrator',
  latex: 'application/x-latex',
  rpm: 'application/x-rpm',
  sh: 'application/x-sh',
  shar: 'application/x-shar',
  swf: 'application/x-shockwave-flash',
  sit: 'application/x-stuffit',
  sv4cpio: 'application/x-sv4cpio',
  sv4crc: 'application/x-sv4crc',
  tar: 'application/x-tar',
  tcl: 'application/x-tcl',
  tex: 'application/x-tex',
  man: 'application/x-troff-man',
  me: 'application/x-troff-me',
  ms: 'application/x-troff-ms',
  ustar: 'application/x-ustar',
  src: 'application/x-wais-source',
  zip: 'application/zip',
  m3u: 'audio/x-mpegurl',
  ra: 'audio/x-pn-realaudio',
  wav: 'audio/x-wav',
  wma: 'audio/x-ms-wma',
  wax: 'audio/x-ms-wax',
  pdb: 'chemical/x-pdb',
  xyz: 'chemical/x-xyz',
  bmp: 'image/bmp',
  gif: 'image/gif',
  ief: 'image/ief',
  png: 'image/png',
  wbmp: 'image/vnd.wap.wbmp',
  ras: 'image/x-cmu-raster',
  pnm: 'image/x-portable-anymap',
  pbm: 'image/x-portable-bitmap',
  pgm: 'image/x-portable-graymap',
  ppm: 'image/x-portable-pixmap',
  rgb: 'image/x-rgb',
  xbm: 'image/x-xbitmap',
  xpm: 'image/x-xpixmap',
  xwd: 'image/x-xwindowdump',
  css: 'text/css',
  rtx: 'text/richtext',
  tsv: 'text/tab-separated-values',
  jad: 'text/vnd.sun.j2me.app-descriptor',
  wml: 'text/vnd.wap.wml',
  wmls: 'text/vnd.wap.wmlscript',
  etx: 'text/x-setext',
  mxu: 'video/vnd.mpegurl',
  flv: 'video/x-flv',
  wm: 'video/x-ms-wm',
  wmv: 'video/x-ms-wmv',
  wmx: 'video/x-ms-wmx',
  wvx: 'video/x-ms-wvx',
  avi: 'video/x-msvideo',
  movie: 'video/x-sgi-movie',
  ice: 'x-conference/x-cooltalk',
  '3gp': 'video/3gpp',
  ai: 'application/postscript',
  aif: 'audio/x-aiff',
  aifc: 'audio/x-aiff',
  aiff: 'audio/x-aiff',
  asc: 'text/plain',
  atom: 'application/atom+xml',
  au: 'audio/basic',
  bin: 'application/octet-stream',
  cdf: 'application/x-netcdf',
  cgm: 'image/cgm',
  class: 'application/octet-stream',
  dcr: 'application/x-director',
  dif: 'video/x-dv',
  dir: 'application/x-director',
  djv: 'image/vnd.djvu',
  djvu: 'image/vnd.djvu',
  dll: 'application/octet-stream',
  dmg: 'application/octet-stream',
  dms: 'application/octet-stream',
  dtd: 'application/xml-dtd',
  dv: 'video/x-dv',
  dxr: 'application/x-director',
  eps: 'application/postscript',
  exe: 'application/octet-stream',
  ez: 'application/andrew-inset',
  gram: 'application/srgs',
  grxml: 'application/srgs+xml',
  gz: 'application/x-gzip',
  htm: 'text/html',
  html: 'text/html',
  ico: 'image/x-icon',
  ics: 'text/calendar',
  ifb: 'text/calendar',
  iges: 'model/iges',
  igs: 'model/iges',
  jp2: 'image/jp2',
  jpe: 'image/jpeg',
  jpeg: 'image/jpeg',
  jpg: 'image/jpeg',
  kar: 'audio/midi',
  lha: 'application/octet-stream',
  lzh: 'application/octet-stream',
  m4a: 'audio/mp4a-latm',
  m4p: 'audio/mp4a-latm',
  m4u: 'video/vnd.mpegurl',
  m4v: 'video/x-m4v',
  mac: 'image/x-macpaint',
  mathml: 'application/mathml+xml',
  mesh: 'model/mesh',
  mid: 'audio/midi',
  midi: 'audio/midi',
  mov: 'video/quicktime',
  mp2: 'audio/mpeg',
  mp3: 'audio/mpeg',
  mp4: 'video/mp4',
  mpe: 'video/mpeg',
  mpeg: 'video/mpeg',
  mpg: 'video/mpeg',
  mpga: 'audio/mpeg',
  msh: 'model/mesh',
  nc: 'application/x-netcdf',
  oda: 'application/oda',
  ogv: 'video/ogv',
  pct: 'image/pict',
  pic: 'image/pict',
  pict: 'image/pict',
  pnt: 'image/x-macpaint',
  pntg: 'image/x-macpaint',
  ps: 'application/postscript',
  qt: 'video/quicktime',
  qti: 'image/x-quicktime',
  qtif: 'image/x-quicktime',
  ram: 'audio/x-pn-realaudio',
  rdf: 'application/rdf+xml',
  rm: 'application/vnd.rn-realmedia',
  roff: 'application/x-troff',
  sgm: 'text/sgml',
  sgml: 'text/sgml',
  silo: 'model/mesh',
  skd: 'application/x-koan',
  skm: 'application/x-koan',
  skp: 'application/x-koan',
  skt: 'application/x-koan',
  smi: 'application/smil',
  smil: 'application/smil',
  snd: 'audio/basic',
  so: 'application/octet-stream',
  svg: 'image/svg+xml',
  t: 'application/x-troff',
  texi: 'application/x-texinfo',
  texinfo: 'application/x-texinfo',
  tif: 'image/tiff',
  tiff: 'image/tiff',
  tr: 'application/x-troff',
  txt: 'text/plain',
  vrml: 'model/vrml',
  vxml: 'application/voicexml+xml',
  webm: 'video/webm',
  wrl: 'model/vrml',
  xht: 'application/xhtml+xml',
  xhtml: 'application/xhtml+xml',
  xml: 'application/xml',
  xsl: 'application/xml',
  xslt: 'application/xslt+xml',
  xul: 'application/vnd.mozilla.xul+xml'
}
export function getContentType(fileName) {
  const lastIndex = fileName.lastIndexOf('.')
  const suffit = fileName.substring(lastIndex + 1, fileName.length)
  return typeList[suffit] || 'application/octet-stream'
}
